package locadora.aplicacao;

import locadora.negocio.pessoas.*;

public class TelaGerente extends Tela {

	private static final String SENHA = "12345";
	
	public TelaGerente() {
		super("Gereciador do sistema");
	}
	
	protected void imprimirTela(Gerente root) {
		if(!this.validarAcesso(root)) return;
		while(true) {
			int opcao = -1;
			while(opcao < 0 || opcao > 4) {
				this.limpar();
				this.imprimirMensagem(this.titulo);
				this.imprimirMensagem("");
				this.imprimirMensagem("(1) Funcionários");
				this.imprimirMensagem("(2) Clientes");
				this.imprimirMensagem("(3) Títulos");
				this.imprimirMensagem("(4) Relatórios");
				this.imprimirMensagem("");
				this.imprimirMensagem("(0) Voltar");
				this.imprimirMensagem("");
				this.requisitarEntrada("Por favor, escolha uma opção.");
				try { opcao = Integer.parseInt(this.lerEntrada()); }
				catch(Exception e) { this.imprimirErro("Opção inválida!"); }
			}
			this.limpar();
			switch(opcao) {
				case 1: this.menuFuncionarios(); break;
				case 2: this.menuClientes(); break;
				case 3: this.menuTitulos(); break;
				case 4: this.menuRelatorios(); break;
				case 0: return;
			}
		}
	}
	
	private boolean validarAcesso(Gerente root) {
		this.limpar();
		this.requisitarEntrada("Por favor, entre com a senha do gerente.");
		String senha = this.lerEntrada();
		if(TelaGerente.SENHA.equals(senha)) {
			this.usuario = root;
			return true;
		} else {
			this.imprimirErro("Senha incorreta!");
			return false;
		}
	}
	
	private void menuClientes() {
		TelaCliente tela = new TelaCliente(this.usuario);
		tela.imprimirTela();
	}
	
	private void menuTitulos() {
		TelaTitulo tela = new TelaTitulo(this.usuario);
		tela.imprimirTela();
	}
	
	private void menuFuncionarios() {
		TelaFuncionario tela = new TelaFuncionario(this.usuario);
		tela.imprimirTela();
	}
	
	private void menuRelatorios() {
		TelaRelatorio tela = new TelaRelatorio(this.usuario);
		tela.imprimirTela();
	}
}


